home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / kcl.lha / lsp / seq.c < prev    next >
C/C++ Source or Header  |  1987-06-04  |  10KB  |  538 lines

  1.  
  2. /* (C) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved. */
  3. #include <cmpinclude.h>
  4. #include "seq.h"
  5. init_seq(start,size,data)char *start;int size;object data;
  6. {    register object *base=vs_top;register object *sup=base+VM2;vs_check;
  7.     Cstart=start;Csize=size;Cdata=data;set_VV(VV,VM1,data);
  8.     base[0]= VV[0];
  9.     (void)simple_symlispcall_no_event(VV[16],base+0,1);
  10.     MF(VV[17],L2,start,size,data);
  11.     MF(VV[18],L3,start,size,data);
  12.     MF(VV[19],L4,start,size,data);
  13.     MF(VV[20],L5,start,size,data);
  14.     MF(VV[21],L6,start,size,data);
  15.     MF(VV[22],L7,start,size,data);
  16.     MF(VV[23],L8,start,size,data);
  17.     vs_top=vs_base=base;
  18. }
  19. /*    function definition for MAKE-SEQUENCE    */
  20.  
  21. static L2()
  22. {    register object *base=vs_base;
  23.     register object *sup=base+VM3;
  24.     vs_reserve(VM3);
  25.     if(vs_top-vs_base<2) too_few_arguments();
  26.     parse_key(vs_base+2,FALSE,FALSE,1,VV[2]);
  27.     vs_top=sup;
  28.     base[4]= Cnil;
  29.     base[5]= Cnil;
  30.     if(!(base[0]==VV[1])){
  31.     goto T6;}
  32.     if((base[3])==Cnil){
  33.     goto T9;}
  34.     base[6]= base[1];
  35.     base[7]= VV[2];
  36.     base[8]= base[2];
  37.     vs_top=(vs_base=base+6)+3;
  38.     Lmake_list();
  39.     return;
  40. T9:;
  41.     base[6]= base[1];
  42.     vs_top=(vs_base=base+6)+1;
  43.     Lmake_list();
  44.     return;
  45. T6:;
  46.     if(base[0]==VV[3]){
  47.     goto T15;}
  48.     if(!(base[0]==VV[4])){
  49.     goto T16;}
  50. T15:;
  51.     base[4]= VV[5];
  52.     goto T4;
  53. T16:;
  54.     if(base[0]==VV[6]){
  55.     goto T20;}
  56.     if(!(base[0]==VV[7])){
  57.     goto T21;}
  58. T20:;
  59.     base[4]= VV[8];
  60.     goto T4;
  61. T21:;
  62.     if(base[0]==VV[9]){
  63.     goto T25;}
  64.     if(!(base[0]==VV[10])){
  65.     goto T26;}
  66. T25:;
  67.     base[4]= Ct;
  68.     goto T4;
  69. T26:;
  70.     base[6]= base[0];
  71.     base[0]= simple_symlispcall_no_event(VV[24],base+6,1);
  72.     if(!(car(base[0])==VV[1])){
  73.     goto T33;}
  74.     if((base[3])==Cnil){
  75.     goto T37;}
  76.     base[6]= base[1];
  77.     base[7]= VV[2];
  78.     base[8]= base[2];
  79.     vs_top=(vs_base=base+6)+3;
  80.     Lmake_list();
  81.     return;
  82. T37:;
  83.     base[6]= base[1];
  84.     vs_top=(vs_base=base+6)+1;
  85.     Lmake_list();
  86.     return;
  87. T33:;
  88.     if(car(base[0])==VV[11]){
  89.     goto T43;}
  90.     if(car(base[0])==VV[12]){
  91.     goto T43;}
  92.     base[6]= VV[13];
  93.     base[7]= base[0];
  94.     vs_top=(vs_base=base+6)+2;
  95.     Lerror();
  96.     vs_top=sup;
  97. T43:;
  98.     base[6]= cadr(base[0]);
  99.     if(base[6]==Cnil)goto T50;
  100.     base[4]= base[6];
  101.     goto T4;
  102. T50:;
  103.     base[4]= Ct;
  104. T4:;
  105.     base[6]= base[4];
  106.     base[7]= base[1];
  107.     base[8]= Cnil;
  108.     base[9]= Cnil;
  109.     base[10]= Cnil;
  110.     base[11]= Cnil;
  111.     base[12]= Cnil;
  112.     vs_top=(vs_base=base+6)+7;
  113.     siLmake_vector();
  114.     vs_top=sup;
  115.     base[5]= vs_base[0];
  116.     if((base[3])==Cnil){
  117.     goto T61;}
  118.     {int V1;
  119.     int V2;
  120.     V1= 0;
  121.     V2= fix(base[1]);
  122. T67:;
  123.     if(!((V1)>=(V2))){
  124.     goto T68;}
  125.     goto T61;
  126. T68:;
  127.     (void)(elt_set(base[5],V1,base[2]));
  128.     V1= (V1)+1;
  129.     goto T67;}
  130. T61:;
  131.     vs_top=(vs_base=base+5)+1;
  132.     return;
  133. }
  134. /*    function definition for CONCATENATE    */
  135.  
  136. static L3()
  137. {    register object *base=vs_base;
  138.     register object *sup=base+VM4;
  139.     vs_reserve(VM4);
  140.     if(vs_top-vs_base<1) too_few_arguments();
  141.     vs_base=vs_base+1;
  142.     vs_top[0]=Cnil;
  143.     {object *p=vs_top;
  144.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  145.     vs_top=sup;
  146.     {int V3;
  147.     base[4]= base[0];
  148.     {object V4;
  149.     {object V5;
  150.     object V6= base[1];
  151.     if(endp(V6)){
  152.     V4= Cnil;
  153.     goto T79;}
  154.     base[6]=V5=MMcons(Cnil,Cnil);
  155. T80:;
  156.     base[7]= (V6->c.c_car);
  157.     vs_top=(vs_base=base+7)+1;
  158.     Llength();
  159.     vs_top=sup;
  160.     (V5->c.c_car)= vs_base[0];
  161.     if(endp(V6=MMcdr(V6))){
  162.     V4= base[6];
  163.     goto T79;}
  164.     V5=MMcdr(V5)=MMcons(Cnil,Cnil);
  165.     goto T80;}
  166. T79:;
  167.      vs_top=base+6;
  168.      while(!endp(V4))
  169.      {vs_push(car(V4));V4=cdr(V4);}
  170.     vs_base=base+6;}
  171.     Lplus();
  172.     vs_top=sup;
  173.     base[5]= vs_base[0];
  174.     vs_top=(vs_base=base+4)+2;
  175.     L2();
  176.     vs_top=sup;
  177.     base[2]= vs_base[0];
  178.     V3= 0;
  179.     base[3]= base[1];
  180. T85:;
  181.     if((base[3])!=Cnil){
  182.     goto T86;}
  183.     vs_top=(vs_base=base+2)+1;
  184.     return;
  185. T86:;
  186.     {int V7;
  187.     int V8;
  188.     V7= 0;
  189.     V8= length(car(base[3]));
  190. T94:;
  191.     if(!((V7)>=(V8))){
  192.     goto T95;}
  193.     goto T90;
  194. T95:;
  195.     base[4]= elt(car(base[3]),V7);
  196.     (void)(elt_set(base[2],V3,base[4]));
  197.     V3= (V3)+(1);
  198.     V7= (V7)+1;
  199.     goto T94;}
  200. T90:;
  201.     base[3]= cdr(base[3]);
  202.     goto T85;}
  203. }
  204. /*    function definition for MAP    */
  205.  
  206. static L4()
  207. {    register object *base=vs_base;
  208.     register object *sup=base+VM5;
  209.     vs_reserve(VM5);
  210.     if(vs_top-vs_base<3) too_few_arguments();
  211.     vs_base=vs_base+3;
  212.     vs_top[0]=Cnil;
  213.     {object *p=vs_top;
  214.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  215.     vs_top=sup;
  216.     base[3]= make_cons(base[2],base[3]);
  217.     {object V9;
  218.     {object V10;
  219.     object V11= base[3];
  220.     if(endp(V11)){
  221.     V9= Cnil;
  222.     goto T111;}
  223.     base[5]=V10=MMcons(Cnil,Cnil);
  224. T112:;
  225.     base[6]= (V11->c.c_car);
  226.     vs_top=(vs_base=base+6)+1;
  227.     Llength();
  228.     vs_top=sup;
  229.     (V10->c.c_car)= vs_base[0];
  230.     if(endp(V11=MMcdr(V11))){
  231.     V9= base[5];
  232.     goto T111;}
  233.     V10=MMcdr(V10)=MMcons(Cnil,Cnil);
  234.     goto T112;}
  235. T111:;
  236.      vs_top=base+5;
  237.      while(!endp(V9))
  238.      {vs_push(car(V9));V9=cdr(V9);}
  239.     vs_base=base+5;}
  240.     Lmin();
  241.     vs_top=sup;
  242.     base[4]= vs_base[0];
  243.     if((base[0])!=Cnil){
  244.     goto T116;}
  245.     {int V12;
  246.     int V13;
  247.     V12= 0;
  248.     V13= fix(base[4]);
  249. T121:;
  250.     if(!((V12)>=(V13))){
  251.     goto T122;}
  252.     base[5]= Cnil;
  253.     vs_top=(vs_base=base+5)+1;
  254.     return;
  255. T122:;
  256.     base[5]= base[1];
  257.     {object V14;
  258.     {object V15;
  259.     object V16= base[3];
  260.     if(endp(V16)){
  261.     V14= Cnil;
  262.     goto T128;}
  263.     base[6]=V15=MMcons(Cnil,Cnil);
  264. T129:;
  265.     (V15->c.c_car)= elt((V16->c.c_car),V12);
  266.     if(endp(V16=MMcdr(V16))){
  267.     V14= base[6];
  268.     goto T128;}
  269.     V15=MMcdr(V15)=MMcons(Cnil,Cnil);
  270.     goto T129;}
  271. T128:;
  272.      vs_top=base+6;
  273.      while(!endp(V14))
  274.      {vs_push(car(V14));V14=cdr(V14);}
  275.     vs_base=base+6;}
  276.     super_funcall_no_event(base[5]);
  277.     vs_top=sup;
  278.     V12= (V12)+1;
  279.     goto T121;}
  280. T116:;
  281.     base[6]= base[0];
  282.     base[7]= base[4];
  283.     vs_top=(vs_base=base+6)+2;
  284.     L2();
  285.     vs_top=sup;
  286.     base[5]= vs_base[0];
  287.     {int V17;
  288.     int V18;
  289.     V17= 0;
  290.     V18= fix(base[4]);
  291. T140:;
  292.     if(!((V17)>=(V18))){
  293.     goto T141;}
  294.     vs_top=(vs_base=base+5)+1;
  295.     return;
  296. T141:;
  297.     base[7]= base[1];
  298.     {object V19;
  299.     {object V20;
  300.     object V21= base[3];
  301.     if(endp(V21)){
  302.     V19= Cnil;
  303.     goto T148;}
  304.     base[8]=V20=MMcons(Cnil,Cnil);
  305. T149:;
  306.     (V20->c.c_car)= elt((V21->c.c_car),V17);
  307.     if(endp(V21=MMcdr(V21))){
  308.     V19= base[8];
  309.     goto T148;}
  310.     V20=MMcdr(V20)=MMcons(Cnil,Cnil);
  311.     goto T149;}
  312. T148:;
  313.      vs_top=base+8;
  314.      while(!endp(V19))
  315.      {vs_push(car(V19));V19=cdr(V19);}
  316.     vs_base=base+8;}
  317.     super_funcall_no_event(base[7]);
  318.     vs_top=sup;
  319.     base[6]= vs_base[0];
  320.     (void)(elt_set(base[5],V17,base[6]));
  321.     V17= (V17)+1;
  322.     goto T140;}
  323. }
  324. /*    function definition for SOME    */
  325.  
  326. static L5()
  327. {    register object *base=vs_base;
  328.     register object *sup=base+VM6;
  329.     vs_reserve(VM6);
  330.     if(vs_top-vs_base<2) too_few_arguments();
  331.     vs_base=vs_base+2;
  332.     vs_top[0]=Cnil;
  333.     {object *p=vs_top;
  334.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  335.     vs_top=sup;
  336.     base[2]= make_cons(base[1],base[2]);
  337.     {int V22;
  338.     int V23;
  339.     V22= 0;
  340.     {object V24;
  341.     {object V25;
  342.     object V26= base[2];
  343.     if(endp(V26)){
  344.     V24= Cnil;
  345.     goto T158;}
  346.     base[3]=V25=MMcons(Cnil,Cnil);
  347. T159:;
  348.     base[4]= (V26->c.c_car);
  349.     vs_top=(vs_base=base+4)+1;
  350.     Llength();
  351.     vs_top=sup;
  352.     (V25->c.c_car)= vs_base[0];
  353.     if(endp(V26=MMcdr(V26))){
  354.     V24= base[3];
  355.     goto T158;}
  356.     V25=MMcdr(V25)=MMcons(Cnil,Cnil);
  357.     goto T159;}
  358. T158:;
  359.      vs_top=base+3;
  360.      while(!endp(V24))
  361.      {vs_push(car(V24));V24=cdr(V24);}
  362.     vs_base=base+3;}
  363.     Lmin();
  364.     vs_top=sup;
  365.     V23= fix(vs_base[0]);
  366. T163:;
  367.     if(!((V22)>=(V23))){
  368.     goto T164;}
  369.     base[3]= Cnil;
  370.     vs_top=(vs_base=base+3)+1;
  371.     return;
  372. T164:;
  373.     base[4]= base[0];
  374.     {object V27;
  375.     {object V28;
  376.     object V29= base[2];
  377.     if(endp(V29)){
  378.     V27= Cnil;
  379.     goto T171;}
  380.     base[5]=V28=MMcons(Cnil,Cnil);
  381. T172:;
  382.     (V28->c.c_car)= elt((V29->c.c_car),V22);
  383.     if(endp(V29=MMcdr(V29))){
  384.     V27= base[5];
  385.     goto T171;}
  386.     V28=MMcdr(V28)=MMcons(Cnil,Cnil);
  387.     goto T172;}
  388. T171:;
  389.      vs_top=base+5;
  390.      while(!endp(V27))
  391.      {vs_push(car(V27));V27=cdr(V27);}
  392.     vs_base=base+5;}
  393.     super_funcall_no_event(base[4]);
  394.     vs_top=sup;
  395.     base[3]= vs_base[0];
  396.     if((base[3])==Cnil){
  397.     goto T168;}
  398.     vs_top=(vs_base=base+3)+1;
  399.     return;
  400. T168:;
  401.     V22= (V22)+1;
  402.     goto T163;}
  403. }
  404. /*    function definition for EVERY    */
  405.  
  406. static L6()
  407. {    register object *base=vs_base;
  408.     register object *sup=base+VM7;
  409.     vs_reserve(VM7);
  410.     if(vs_top-vs_base<2) too_few_arguments();
  411.     vs_base=vs_base+2;
  412.     vs_top[0]=Cnil;
  413.     {object *p=vs_top;
  414.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  415.     vs_top=sup;
  416.     base[2]= make_cons(base[1],base[2]);
  417.     {int V30;
  418.     int V31;
  419.     V30= 0;
  420.     {object V32;
  421.     {object V33;
  422.     object V34= base[2];
  423.     if(endp(V34)){
  424.     V32= Cnil;
  425.     goto T183;}
  426.     base[3]=V33=MMcons(Cnil,Cnil);
  427. T184:;
  428.     base[4]= (V34->c.c_car);
  429.     vs_top=(vs_base=base+4)+1;
  430.     Llength();
  431.     vs_top=sup;
  432.     (V33->c.c_car)= vs_base[0];
  433.     if(endp(V34=MMcdr(V34))){
  434.     V32= base[3];
  435.     goto T183;}
  436.     V33=MMcdr(V33)=MMcons(Cnil,Cnil);
  437.     goto T184;}
  438. T183:;
  439.      vs_top=base+3;
  440.      while(!endp(V32))
  441.      {vs_push(car(V32));V32=cdr(V32);}
  442.     vs_base=base+3;}
  443.     Lmin();
  444.     vs_top=sup;
  445.     V31= fix(vs_base[0]);
  446. T188:;
  447.     if(!((V30)>=(V31))){
  448.     goto T189;}
  449.     base[3]= Ct;
  450.     vs_top=(vs_base=base+3)+1;
  451.     return;
  452. T189:;
  453.     base[3]= base[0];
  454.     {object V35;
  455.     {object V36;
  456.     object V37= base[2];
  457.     if(endp(V37)){
  458.     V35= Cnil;
  459.     goto T197;}
  460.     base[4]=V36=MMcons(Cnil,Cnil);
  461. T198:;
  462.     (V36->c.c_car)= elt((V37->c.c_car),V30);
  463.     if(endp(V37=MMcdr(V37))){
  464.     V35= base[4];
  465.     goto T197;}
  466.     V36=MMcdr(V36)=MMcons(Cnil,Cnil);
  467.     goto T198;}
  468. T197:;
  469.      vs_top=base+4;
  470.      while(!endp(V35))
  471.      {vs_push(car(V35));V35=cdr(V35);}
  472.     vs_base=base+4;}
  473.     super_funcall_no_event(base[3]);
  474.     vs_top=sup;
  475.     if((vs_base[0])!=Cnil){
  476.     goto T193;}
  477.     base[3]= Cnil;
  478.     vs_top=(vs_base=base+3)+1;
  479.     return;
  480. T193:;
  481.     V30= (V30)+1;
  482.     goto T188;}
  483. }
  484. /*    function definition for NOTANY    */
  485.  
  486. static L7()
  487. {    register object *base=vs_base;
  488.     register object *sup=base+VM8;
  489.     vs_reserve(VM8);
  490.     if(vs_top-vs_base<2) too_few_arguments();
  491.     vs_base=vs_base+2;
  492.     vs_top[0]=Cnil;
  493.     {object *p=vs_top;
  494.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  495.     vs_top=sup;
  496.     base[4]= base[0];
  497.     base[5]= base[1];
  498.     {object V38;
  499.     V38= base[2];
  500.      vs_top=base+6;
  501.      while(!endp(V38))
  502.      {vs_push(car(V38));V38=cdr(V38);}
  503.     vs_base=base+4;}
  504.     L5();
  505.     vs_top=sup;
  506.     base[3]= vs_base[0];
  507.     base[4]= ((base[3])==Cnil?Ct:Cnil);
  508.     vs_top=(vs_base=base+4)+1;
  509.     return;
  510. }
  511. /*    function definition for NOTEVERY    */
  512.  
  513. static L8()
  514. {    register object *base=vs_base;
  515.     register object *sup=base+VM9;
  516.     vs_reserve(VM9);
  517.     if(vs_top-vs_base<2) too_few_arguments();
  518.     vs_base=vs_base+2;
  519.     vs_top[0]=Cnil;
  520.     {object *p=vs_top;
  521.      for(;p>vs_base;p--)p[-1]=MMcons(p[-1],p[0]);}
  522.     vs_top=sup;
  523.     base[4]= base[0];
  524.     base[5]= base[1];
  525.     {object V39;
  526.     V39= base[2];
  527.      vs_top=base+6;
  528.      while(!endp(V39))
  529.      {vs_push(car(V39));V39=cdr(V39);}
  530.     vs_base=base+4;}
  531.     L6();
  532.     vs_top=sup;
  533.     base[3]= vs_base[0];
  534.     base[4]= ((base[3])==Cnil?Ct:Cnil);
  535.     vs_top=(vs_base=base+4)+1;
  536.     return;
  537. }
  538.